#ifndef CONCRETE_DECORATOR_H
#define CONCRETE_DECORATOR_H

#include"decorator.h"

class DecoratorA:public IDecorator{

public:
    DecoratorA(IBeverage* be):IDecorator(be){}
    string Name()override{
        return m_pBeverage->Name()+"+DecoratorA";
    }
    double Cost()override{
        return m_pBeverage->Cost()+3.0;
    }

};

class DecoratorB:public IDecorator{

public:
    DecoratorB(IBeverage* be):IDecorator(be){}
    string Name()override{
        return m_pBeverage->Name()+"+DecoratorB";
    }
    double Cost()override{
        return m_pBeverage->Cost()+2.0;
    }

};

class DecoratorC:public IDecorator{

public:
    DecoratorC(IBeverage* be):IDecorator(be){}
    string Name()override{
        return m_pBeverage->Name()+"+DecoratorC";
    }
    double Cost()override{
        return m_pBeverage->Cost()+5.0;
    }

};
#endif // CONCRETE_DECORATOR_H
